package com.agile.leetcode.node.removenode;

/**
 * 移除链表中的一个数
 *
 * @Author KD
 * @Date 2021/1/18 14:08
 */
public class RemoveNode {
    public static void main(String[] args) {
        ListNode node9 = new ListNode(9, null);
        ListNode node7 = new ListNode(7, node9);
        ListNode node5 = new ListNode(5, node7);
        ListNode node3 = new ListNode(3, node5);
        ListNode node1 = new ListNode(1, node3);
        ListNode listNode = removeNode(node1, 9);
        System.out.println(listNode);
    }

    public static ListNode removeNode(ListNode listNode, int value) {
        // 创建哑结点
        ListNode dummy = new ListNode(0, null);
        //
        ListNode ptr = dummy;
        while (listNode != null) {
            if (listNode.value != value) {
                // 创建新的链表
                ptr.next = listNode;
                ptr = ptr.next;
            }else if (listNode.next == null){
                // 如果是最后一位则将其置为null
                ptr.next=null;
            }
            listNode = listNode.next;
        }
        return dummy.next;
    }
}

class ListNode {
    int value;
    ListNode next;

    public ListNode(int value, ListNode next) {
        this.value = value;
        this.next = next;
    }

    @Override
    public String toString() {
        return "ListNode{" +
                "value=" + value +
                ", next=" + next +
                '}';
    }
}
